package repaso;

import java.util.HashSet;
import java.util.Set;

/**
 * Un Lugar es un punto de interés en la Ciudad, identificado por un número y
 * localizado geográficamente por sus coordenadas de latitud y longitud.
 */
public class Lugar {

	private int id;
	private String nombre;
	private double latitud;
	private double longitud;
	private Set<Etiqueta> etiquetas;

	/**
	 * post: inicializa la instancia de Lugar con el identificador (id), nombre,
	 * 
	 * latitud y longitud indicadas, sin etiquetas asociadas.
	 */
	public Lugar(int id, String nombre, double latitud, double longitud) {
		this.id = id;
		this.nombre = nombre;
		this.latitud = latitud;
		this.longitud = longitud;
		this.etiquetas = new HashSet<Etiqueta>();

	}

	/**
	 * post: devuelve el identificador del Lugar.
	 */
	public int getId() {
		return this.id;
	}

	/**
	 * post: devuelve el nombre del Lugar.
	 */
	public String getNombre() {
		return this.nombre;
	}

	/**
	 * post: devuelve la coordenada de latitud del Lugar.
	 */
	public double getLatitud() {
		return this.latitud;
	}

	/**
	 * post: devuelve la coordenada de longitud del Lugar.
	 */
	public double getLongitud() {
		return this.longitud;
	}

	/**
	 * post: se añade una etiqueta al lugar;
	 */
	public void addEtiqueta(Etiqueta nuevaEtiqueta) {
		this.etiquetas.add(nuevaEtiqueta);
	}

	public void remEtiqueta(Etiqueta nuevaEtiqueta)
			throws MissingEtiquetaException {
		if (this.etiquetas.contains(nuevaEtiqueta)) {
			this.etiquetas.remove(nuevaEtiqueta);
		} else {
			throw new MissingEtiquetaException("Etiqueta no encontrada");
		}

	}

	/**
	 * post: devuelve la referencia hacia el conjunto de Etiquetas asociadas
	 * 
	 * al Lugar.
	 */
	public Set<Etiqueta> getEtiquetas() {
		return this.etiquetas;
	}
}
